package exercice_2;


import java.awt.*;                    // Pour  Graphics, Frame
import java.awt.event.WindowAdapter;  // Pour fermer
import java.awt.event.WindowEvent;    // Pour fermer

public abstract class Lk extends Frame {
    
    private static final long serialVersionUID = 1L;
    static final int WIDTH = 800;       // taille initiale de la frame 
    static final int HEIGHT = 1200;
    protected int profondeur;



    /**
     * Creation de Lk.
     *
     * @param prof 
     *       Nombre d'itérations
     */
    public Lk(int prof) {
        this.setSize(WIDTH, HEIGHT);
        this.setVisible(true);
        this.setBackground (Color.white);
        this.profondeur=prof;
        addWindowListener(new WindowHandler());  // pour fermer
        setTitle("Exercice 2.2 - Classe Lk");
        repaint();
    }

    private class WindowHandler extends WindowAdapter {
        public void windowClosing(WindowEvent e) {System.exit(0);}
    }

    public void paint(Graphics g) {
        int frameHeight = getSize().height; // taille du frame, cette fois avec lesbvordures
        int frameWidth = getSize().width;   
        int h = frameHeight-50 ;  //   pour que Ck tienne dans 
        int w = frameWidth-50;  //     le frame
        int rootX = frameWidth/2; 
        int rootY = frameHeight/2;   
        g.setColor(Color.black); // La couleur avec laquelle on va dessiner
        drawLk(rootX, rootY, h/3, profondeur, g); 
    }
    
    /**
     * Méthode drawLk - Produit un dessin recursif de Lk
     *
     * @param k
     *       Nombre d'itérations
     * @param x
     *       Abscisse du point de départ
     * @param y 
     *       L'ordonnée du point de départ
     * @param longueur
     *       Longueur voulue
     * @param drawingArea
     *       L'objet graphique dans lequel Ck est dessiné
     */
    public abstract void drawLk(int x, int y, int longueur, int k, Graphics drawingArea);

}
